GtkDialog: fix up handling of style properties
authorMatthias Clasen <mclasen@redhat.com>
Thu, 10 Apr 2014 20:49:07 +0000 (13:49 -0700)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 10 Apr 2014 20:54:37 +0000 (13:54 -0700)
The use of border-width-set here was an attempt to differentiate
between explicitly set (from code / ui files) border width from
theme changes. But when we are calling gtk_window_set_border_width
to apply the theme value, the -set property gets set, and all
further theme changes are ignored. This has the effect of only
letting the default value of these properties get applied.

Fix this by unsetting border-width-set after applying theme values.

gtk/gtkdialog.c

index d95be7132d9d8b51be54fe207d194088a4a76e31..eb342a55f7af8baa3f4ac9335373b238ef59dc7f 100644 (file)
@@ -574,7 +574,6 @@ gtk_dialog_class_init (GtkDialogClass *class)
    * content area of the dialog, as returned by
    * gtk_dialog_get_content_area(), unless gtk_container_set_border_width()
    * was called on that widget directly.
-   *
    */
   gtk_widget_class_install_style_property (widget_class,
                                           g_param_spec_int ("content-area-border",
@@ -611,6 +610,14 @@ gtk_dialog_class_init (GtkDialogClass *class)
                                                              6,
                                                              GTK_PARAM_READABLE));
 
+  /**
+   * GtkDialog:action-area-border:
+   *
+   * The default border width used around the
+   * action area of the dialog, as returned by
+   * gtk_dialog_get_action_area(), unless gtk_container_set_border_width()
+   * was called on that widget directly.
+   */
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_int ("action-area-border",
                                                              P_("Action area border"),
@@ -668,8 +675,11 @@ update_spacings (GtkDialog *dialog)
                         NULL);
 
   if (!_gtk_container_get_border_width_set (GTK_CONTAINER (priv->vbox)))
-    gtk_container_set_border_width (GTK_CONTAINER (priv->vbox),
-                                    content_area_border);
+    {
+      gtk_container_set_border_width (GTK_CONTAINER (priv->vbox),
+                                      content_area_border);
+      _gtk_container_set_border_width_set (GTK_CONTAINER (priv->vbox), FALSE);
+    }
 
   if (!_gtk_box_get_spacing_set (GTK_BOX (priv->vbox)))
     {
@@ -681,8 +691,11 @@ update_spacings (GtkDialog *dialog)
                        button_spacing);
 
   if (!_gtk_container_get_border_width_set (GTK_CONTAINER (priv->action_area)))
-    gtk_container_set_border_width (GTK_CONTAINER (priv->action_area),
-                                    action_area_border);
+    {
+      gtk_container_set_border_width (GTK_CONTAINER (priv->action_area),
+                                      action_area_border);
+      _gtk_container_set_border_width_set (GTK_CONTAINER (priv->action_area), FALSE);
+    }
 }
 
 static void